【2023 · CANN训练营第一季】智能小车课堂笔记 | 您所在的位置:网站首页 › cann训练营 好吗 › 【2023 · CANN训练营第一季】智能小车课堂笔记 |
【2023 · CANN训练营第一季】智能小车课堂笔记
一、开发自动驾驶小车需要的模块
1.稳固的结构模块 2.运动控制模块 3.超声波传感器模块 4.摄像头视觉模块 5.其他传感器模块 二、小车的整体控制思路图这里老师附上了一个对整个小车的设计思路图,以下未画线的为原图: 我将老师几个设计点的思路图简单画线标注了一下: 我们可以看到,三种颜色其实可以简略的代表了我们需要完成的几个功能: 1.灰色: 相关的初始化操作,硬件初始化、自动化测试、位置合法检查、模型加载等一系列前置检查工作,确保小车后续可以正常运行 2.蓝色: 小车需要得知的前方环境信息均来自各种摄像头、传感器,采集了相关数据后,送入加载好的模型进行推理,并后处理结果为具体场景下的一些信息,反馈回主控部分函数,分析模型推理结果提供的动作序列,并下发给相关控制模块,下发给小车运动的控制模块主控芯片ESP32,并尤其进行实际的动作指令下发,如电机控制、舵机控制 3.黄色: 控制完成后,ESP32需上报其动作执行的情况,到主控函数进行分析。 其实老师这里也提到用编码电机等方式,其实就说明如果进行精密控制,也可以在主控中加入一些PID算法,辅助进行小车的姿态控制 三、小车设计思路 1.小车的三维结构设计基本原则: 1.满足小车运转过程中运动干涉率为0 2.安装时的易用性和可行性 3.小车的重心位置的控制 4.模块预留的最大运动尺寸 2.ESP32控制器开发入门1.esp32单片机控制电机和舵机的原理: 依靠PWM信号脉冲的占空比,以改变电机转速或者舵机角度 2.小车运动控制与接口程序 (1)通信方式通过可以双向通信的I/O引脚实现通信串口的功能。其中ESP32老师使用的是Arduino封装好的C接口,并且可以自定义用作串口收发的IO,Atlas端老师是用的Pthon中的pyserials包封装的主控设备串口库,修改其中的HardwareSerial类就可以指定对应的引脚。 注意:两边串口的TX和RX要交叉对联哦!不然两边都收不到。。。 串口是一个字节一个字节进行发送的,为了提高控制的效率,尽可能简洁的内容达到控制的目的 老师这里设置的协议是7个字(short型)长的内容,前4个字对应的是电机的速度值,后2个字是舵机的角度值,最后一个字是校验码,有校验码的存在可以对数据传输链路下发数据的正确性有一定的保证。 (3)ESP32主程序设计思路做好电机、舵机的底层硬件封装库后,老师的主程序主要由以下部分组成 setup函数:针对串口、电机、舵机等进行初始化. set_motor函数:预配置好4个电机的初速度后,通过该函数控制电机的速度 ps:老师用的是两项电机,这里应该是有正和负的 set_servo函数:预配置好2个舵机的初速度后,通过该函数控制舵机的角度 loop函数:主循环函数,一直循环读取串口数据并解析。 (4)python主程序设计1.实现对基本运动控制的功能函数 2.串口数据收发 3.序列化控制指令和防止指令冲突或丢失:其目的是为了保证同一时刻仅能下发一个指令到ESP32 3.循迹推理任务的设计思路设计思路框图如下 通过对场景的大量数据喂给模型,进而获得不同场景下的权重参数,老师的处理思路如下: 这里我根据自己的理解简单做了标注: 1.红色部分: 建立对赛道的边界线建立回归,使小车可以获得到赛道的边界情况,确定两条边界线的中心线,我觉得这和那种用扫点检测黑白赛道的那种建立中线有一定的相似哈哈,通过纵轴的中心线和赛道中心线的交点,使小车知道其应该行进的方向, 2.绿色部分: 绿色点的位置是小车摄像头下边沿的中心点,这代表着小车的目前前端的朝向位置,这个点和上面红色的交点的连线角度,就是小车实际方向和期望方向的一个偏移角度,以此为目标进行后续的姿态动作调整处理 4.停车和追踪任务的简单思路描述这两个任务其实都是根据的对目标框大小和边界的检测的判断: 自动泊车: 根据绿色标注的这个停车标志的大小和这个红色的边界线的一个判断,当绿色框框的大小到一定阈值时,小车在进行平移运动进行泊车,这其实有点像人眼的判断方法,我们看到了停车标志,判断与它越来越近,合适的位置就进行泊车,如果想做的更逼真一点,可以判断到一定大小时进行逼近,正常驶入并调整姿态 追踪 追踪的思路其实和泊车的思路是一样的,通过描框大小和描框中心点去判断离被追踪小车的距离和偏移角度。 四、ROS2与激光雷达建图入门基础: 在开发多传感器融合的样例时,ROS就可以很好做到一个通信桥梁的作用,规整各个传感器与话题、服务,内置多种插件,可以适用到多种不同的场景,还包含了不同的SLAM算法功能包 目前常用的SLAM开源算法可以分为两类: 1.基于滤波,比如扩展卡尔曼滤波(EKF:Extended KalmanFilter)、粒子滤波(PF:Particle Filter)等 2.基于图优化,先通过传感器进行构图,然后对图进行优化。目前比较主流的是图优化的方法,Cartographer就是基于图优化实现的。图优化相对于滤波,不用实时的进行计算,效率更高消耗的资源更少,所以在实际场景中使用的更多 ps:该文仅是为了记录CANN训练营的学习过程所用,不参与任何商业用途 |
CopyRight 2018-2019 实验室设备网 版权所有 |